using System.ComponentModel.DataAnnotations;

namespace AiQiuQuan.Sport.Model.Models
{
    /// <summary>
    /// 新增课程订单dto
    /// </summary>
    public class CourseOrderAddDto
    {
        /// <summary>
        /// 名称
        /// </summary>
        [Required(AllowEmptyStrings = false, ErrorMessage = "名称必填")]
        public string Name { get; set; }

        /// <summary>
        /// 对应购买商品业务ID
        /// </summary>
        [Required(ErrorMessage = "对应购买商品业务ID必填")]
        public Guid BusinessId { get; set; }

        /// <summary>
        /// 活动比赛类型：5活动、6约球、10比赛
        /// </summary>
        [Required(ErrorMessage = "活动比赛类型：5活动、6约球、10比赛必填")]
        public int BusinessType { get; set; }

        /// <summary>
        /// 订单号
        /// </summary>
        [Required(AllowEmptyStrings = false, ErrorMessage = "订单号必填")]
        public string OrderNo { get; set; }

        /// <summary>
        /// 课程类型 1次数课程、2期间课程、3活动课程
        /// </summary>
        [Required(ErrorMessage = "课程类型 1次数课程、2期间课程、3活动课程必填")]
        public int CourseType { get; set; }

        /// <summary>
        /// 课程地址
        /// </summary>
        [Required(AllowEmptyStrings = false, ErrorMessage = "课程地址必填")]
        public string Address { get; set; }

        /// <summary>
        /// 课程开始日期/期间课程、活动课程
        /// </summary>
        public DateTimeOffset StartTime { get; set; }

        /// <summary>
        /// 结束时间/期间课程、活动课程
        /// </summary>
        public DateTimeOffset EndTime { get; set; }

        /// <summary>
        /// 有效月份数
        /// </summary>
        [Required(ErrorMessage = "有效月份数必填")]
        public int ValidMonth { get; set; }

        /// <summary>
        /// 支付方式：1.微信支付、2支付宝支付、3.场馆会员卡支付
        /// </summary>
        [Required(ErrorMessage = "支付方式：1.微信支付、2支付宝支付、3.场馆会员卡支付必填")]
        public int PayType { get; set; }

        /// <summary>
        /// 状态：1未支付、2已支付、5部分退款、6全部退款、8已完成、10已取消
        /// </summary>
        [Required(ErrorMessage = "状态：1未支付、2已支付、5部分退款、6全部退款、8已完成、10已取消必填")]
        public int State { get; set; }

        /// <summary>
        /// 单价
        /// </summary>
        [Required(ErrorMessage = "单价必填")]
        public decimal Price { get; set; }

        /// <summary>
        /// 订单总金额
        /// </summary>
        [Required(ErrorMessage = "订单总金额必填")]
        public decimal OrderAmount { get; set; }

        /// <summary>
        /// 在线实付金额
        /// </summary>
        [Required(ErrorMessage = "在线实付金额必填")]
        public decimal PayAmount { get; set; }

        /// <summary>
        /// 抵扣积分
        /// </summary>
        [Required(ErrorMessage = "抵扣积分必填")]
        public int Bonus { get; set; }

        /// <summary>
        /// 抵扣积分金额
        /// </summary>
        [Required(ErrorMessage = "抵扣积分金额必填")]
        public decimal BonusAmount { get; set; }

        /// <summary>
        /// 优惠券ID
        /// </summary>
        public Guid? CouponId { get; set; }

        /// <summary>
        /// 优惠券金额
        /// </summary>
        [Required(ErrorMessage = "优惠券金额必填")]
        public decimal CouponAmount { get; set; }

        /// <summary>
        /// 订单备注
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 退款金额
        /// </summary>
        [Required(ErrorMessage = "退款金额必填")]
        public decimal RefundAmount { get; set; }

        /// <summary>
        /// 退款备注
        /// </summary>
        public string? RefundRemark { get; set; }

        /// <summary>
        /// 用户ID
        /// </summary>
        [Required(ErrorMessage = "用户ID必填")]
        public Guid UserId { get; set; }

        /// <summary>
        /// 用户电话
        /// </summary>
        public string? Mobile { get; set; }

        /// <summary>
        /// 用户名称
        /// </summary>
        public string? UserName { get; set; }
    }
}
